MAPS

Coral Bleaching

Dot Map

Photo by Pawah Reserve on Unsplash

Photo by Pawah Reserve on Unsplash

The most single revelatory three minutes for me was
the first time I put on scuba gear and dived on a coral reef…
— David Attenborough


When corals are stressed by changes in conditions such as temperature, light, or nutrients, they expel the symbiotic algae living in their tissues, causing them to turn completely white. When a coral bleaches, it is not dead. Corals can survive a bleaching event, but they are under more stress and are subject to mortality.

  • Change in ocean temperature: increased ocean temperature caused by climate change is the leading cause of coral bleaching.
  • Runoff and pollution: storm generated precipitation can rapidly dilute ocean water and runoff can carry pollutants — these can bleach near-shore corals.
  • Overexposure to sunlight: when temperatures are high, high solar irradiance contributes to bleaching in shallow-water corals.
  • Extreme low tides: exposure to the air during extreme low tides can cause bleaching in shallow corals.

Ingest

bleach points

df_bleach <- read.csv("archetypes/coral-bleaching/bleach-pts.csv", header = TRUE, stringsAsFactors = FALSE)
head( df_bleach, n = 10 )

Wrangle

order by severity

# arrange high to appear on top
severity_order <- c("Severity Unknown", "No Bleaching", "Low", "Medium", "High" )
df_bleach <- df_bleach %>% dplyr::arrange(factor(SEVERITY, levels = severity_order))

Base map

natural earth borders, coastline, and country centroids

ne_world <- ne_countries(scale = "small", returnclass = "sf")
ne_coastline <- ne_coastline(scale = "small", returnclass = "sf")

centroids <- countryref %>% filter(type == "country") %>%
  select(name, centroid.lon, centroid.lat) %>%
  group_by(name) %>%
  summarise(
    longitude = mean(centroid.lon, na.rm = T),
    latitude = mean(centroid.lat, na.rm = T)
  )
  
# xlim = c(-100, -40), ylim = c(-5, 35)
centroids <- centroids %>% filter(longitude >= -100 & longitude <= -40)
centroids <- centroids %>% filter(latitude >= -5 & latitude <= 35)
head(centroids, n = 10)

View

color by severity

theme_opts <- theme(
  text = element_text(family = "inconsolata"), 
  plot.title = element_text(color = "#111111", size = 14, face = "bold", family = "inconsolata"),
  plot.subtitle = element_text(color = "#111111", size = 11, family = "inconsolata"),
  plot.caption = element_text(color = "#111111", size = 8, family = "inconsolata"),
  plot.background = element_blank(),
  panel.grid = element_blank(),
  panel.grid.major = element_blank(),
  panel.grid.minor = element_blank(),
  panel.background=element_rect(fill="#b5dafd", colour="#b5dafd"),
  panel.border = element_blank(),
  axis.text = element_blank(),
  axis.line = element_blank(),
  axis.ticks = element_blank(),
  axis.title = element_blank(),
  legend.position = "bottom",
  legend.title = element_blank()
)

# unique(df_bleach$SEVERITY)
# color palette from severity values
severity_types <- c(
  "High" = "#FFFFFF",
  "Medium" = "#FFD9FC",
  "Low" = "#FFA8D4",
  "No Bleaching" = "#ff7f50",
  "Severity Unknown" = "#B2DFDB"
)

v1 <- ggplot() +
  geom_sf(data = ne_coastline, fill=NA, color="#bddefe", size=10.0) +
  geom_sf(data = ne_coastline, fill=NA, color="#edf5fc", size=4.0) +
  geom_sf(data = ne_world, fill="#fdfbde", color="#797875", size=0.5) +
  geom_point( data = df_bleach, aes(x=LON, y=LAT), color = "white", size=3.5) +
  geom_point( data = df_bleach, aes(x=LON, y=LAT, fill=SEVERITY), shape = 21, color = "#ff7f50", size=2.5, alpha = 0.7) +
  geom_text_repel(data = centroids, aes(x = longitude, y = latitude, label = name), 
                  size = 4, hjust = 0.5, vjust = 0.5, family = "inconsolata", fontface = "bold",
                  seed = 42, force = 10, force_pull = 0, min.segment.length = 0, color = "black", bg.color = "white", bg.r = 0.15) +
  scale_fill_manual(values = severity_types) +
  coord_sf(xlim = c(-100, -40), ylim = c(-5, 35)) +
  labs(x=NULL,
       y=NULL,
       title = "Coral Bleaching", 
       subtitle="color by severity") +
  theme_bw() +
  theme_opts

girafe(ggobj = v1, width_svg = 16, height_svg = 12.5,
       options = list(opts_sizing(rescale = TRUE, width = 0.8)))

References

Citations and data sources